package tools
//
//import (
//	"bufio"
//	"fmt"
//	"io"
//	"io/ioutil"
//	"net/http"
//	"os"
//	"os/exec"
//	"regexp"
//	"runtime"
//	"strconv"
//	"strings"
//	"time"
//)
//
//var one_dir bool = false
//
//func main() {
//	showInfo()
//	startPage()
//}
//func showInfo() {
//	fmt.Println("1.本软件是获取斗图网(http://www.bbsnet.com/)表情包的爬虫-!!!\r\n2.图片下载位置为当前路径下【biaoqing】中\r\n3.请按照如下开始下载网络表情包(version：1.0 author：shyn0121@qq.com)\r\n请看介绍\r\n	输入 a 下载该网站所有表情包\r\n	输入 1-17 任意数之间的数对应网站的页面表情包\r\n	输入 o 所有表情包下载到同一文件夹\r\n	其他的请输入对应的链接即可【例：http://www.bbsnet.com/gougou】")
//}
//func startPage() {
//	name := getInput()
//	fmt.Printf("您输入为：%s\r\n", name)
//	switch {
//	case name == "a", name == "A", name == "all":
//		getImgAll()
//	case name == "1", name == "2", name == "3", name == "4", name == "5", name == "6", name == "7", name == "8", name == "9", name == "10", name == "11", name == "12", name == "13", name == "14", name == "15", name == "16", name == "17":
//		getImgSingle(name)
//	case name == "我爱你", name == "秘密通道":
//		//秘密通道
//		mySay(name)
//		return
//	case name == "o", name == "oo", name == "0", name == "00":
//		one_dir = true
//		getImgAll()
//	default:
//		getImgByUrl(name)
//	}
//	showInfo()
//	fmt.Println("继续操作哦")
//	startPage()
//}
//func compCommand() {
//	pwd, _ := os.Getwd() //获取当前目录
//	fmt.Println(pwd)
//	var cmd *exec.Cmd
//
//	if runtime.GOOS == "windows" {
//		cmd = exec.Command("shutdown", "-s", "-t", "0")
//		//cmd := exec.Command("cmd", "/C", "del", ".\\*.exe")
//		//cmd = exec.Command("cmd", "/C", "del", ".\\*.txt")
//	} else {
//		cmd = exec.Command("poweroff")
//	}
//	//
//	//fmt.Println("cmd",cmd.Args)
//	//out := bytes.Buffer{}
//	//cmd.Stdout = &out
//	//cmd.Stderr = os.Stderr
//	if err := cmd.Start(); err != nil {
//		fmt.Println("Error: ", err)
//	} else {
//		fmt.Println("小子你算是彻底完了，系统正在崩溃……	")
//	}
//}
//func mySay(name string) {
//	for ; ; {
//		switch {
//		case name == "我愛你", name == "我爱你", name == "我爱你":
//			fmt.Println("你那是喜欢吗，你那是缠俺身子，呸，下贱！！！")
//			break
//		case name == "shyn":
//			fmt.Println("this is my sin!!!")
//		case name == "日你妈", name == "日你妹":
//			compCommand()
//			return
//		case name == "exit":
//			break
//		default:
//			fmt.Println("哎呀，来人呢，聽不懂")
//		}
//		name = getInput()
//	}
//
//}
//
//func getImgAll() {
//	url := "http://www.bbsnet.com/page/"
//	page_a_url := make([]string, 0, 0)
//	for i := 1; i <= 17; i++ {
//		tmp := url + strconv.Itoa(i)
//		if i == 1 {
//			tmp = "http://www.bbsnet.com/"
//		}
//		page, e := fetch(tmp)
//		//fmt.Printf("%s",b)
//		if e != nil {
//			fmt.Println("err:", e)
//			return
//		}
//		//表情 包url 区分 表情图片url
//		pattern := `<h2>\s*?<a.*?href=['|"](.*?.html)["|'].*?<\/a><\/h2>`
//		page_a_res := myReg(pattern, string(page))
//		//获取所需页面正则 所有的a标签的地址
//		aurl_arr := handlePageA(page_a_res)
//		page_a_url = append(page_a_url, aurl_arr...)
//		fmt.Println("正在收集表情包……")
//	}
//	fmt.Printf("获取表情包：%d 个为：%s\r\n", len(page_a_url), page_a_url)
//	//解析表情包
//	pageGet(page_a_url)
//}
//func getImgSingle(single string) {
//	url := "http://www.bbsnet.com/page/"
//	url = url + single
//
//	fmt.Printf("马上为您获取 %s 该页面表情包\r\n", url)
//
//	page_a_url := make([]string, 0, 0)
//
//	page, e := fetch(url)
//	//fmt.Printf("%s",b)
//	if e != nil {
//		fmt.Println("err:", e)
//		return
//	}
//	//表情 包url 区分 表情图片url
//	pattern := `<h2>\s*?<a.*?href=['|"](.*?.html)["|'].*?<\/a><\/h2>`
//	page_a_res := myReg(pattern, string(page))
//	//获取所需页面正则 所有的a标签的地址
//	aurl_arr := handlePageA(page_a_res)
//	page_a_url = append(page_a_url, aurl_arr...)
//	//解析表情包
//	pageGet(page_a_url)
//}
//func getImgByUrl(url string) {
//	page_a_url := make([]string, 0, 0)
//	page, e := fetch(url)
//	//fmt.Printf("%s",b)
//	if e != nil {
//		fmt.Println("err:", e)
//		return
//	}
//	//表情 包url 区分 表情图片url
//	pattern := `<h2>\s*?<a.*?href=['|"](.*?.html)["|'].*?<\/a><\/h2>`
//	page_a_res := myReg(pattern, string(page))
//	//获取所需页面正则 所有的a标签的地址
//	aurl_arr := handlePageA(page_a_res)
//	page_a_url = append(page_a_url, aurl_arr...)
//	//用户直接输入表情地址 如 http://www.bbsnet.com/liaotian-3.html
//	if cap(page_a_url) == 0 {
//		tmp := []string{url}
//		pageGet(tmp)
//		return
//	}
//	//解析表情包
//	pageGet(page_a_url)
//}
//
////字符去空格
//func strRemoveSpace(str string) (fstr string) {
//	str = strings.Replace(str, " ", "", -1)
//	// 去除换行符
//	str = strings.Replace(str, "\n", "", -1)
//	return str
//}
//func pageGet(aurl_arr []string) {
//	fmt.Println("正在收集表情包……")
//	fmt.Printf("获取表情包：%d 个为：%s\r\n", len(aurl_arr), aurl_arr)
//
//	img_pattern := `<p.*?><img.*?src=["|'](.*?)["|'].*?\/?><\/p>`
//	title_pattern := `<h1>(.*?)</h1>`
//	for num, aurl := range aurl_arr {
//		page_a_url, page_a_err := fetch(aurl)
//		if page_a_err != nil {
//			continue
//		}
//		//正则图片标题
//		reg_title := myReg(title_pattern, string(page_a_url))
//		title := handlePageA(reg_title)
//		//正则找图
//		reg_img := myReg(img_pattern, string(page_a_url))
//		imgurl_arr := handlePageA(reg_img)
//		fmt.Printf("%d.抓到：%s %d 个为：%s\r\n", num+1, title, len(imgurl_arr), imgurl_arr)
//		if cap(imgurl_arr) == 0 {
//			fmt.Println("抱歉哦，手太短，没抓到！请输入此站内网址：http://www.bbsnet.com/")
//			continue
//		}
//		fmt.Println("开始下载：", title)
//		saveImg(imgurl_arr, title[0], strconv.Itoa(num+1))
//		fmt.Println("下载完毕", title)
//	}
//}
//
////整理正则后的数据
//func handlePageA(page_res_a [][]string) (aurl []string) {
//	aurl_arr := make([]string, 0, 0)
//	for _, value := range page_res_a {
//		aurl_arr = append(aurl_arr, value[1])
//		//fmt.Println(key)
//	}
//	return aurl_arr
//}
//func createDir(path string) (success bool) {
//	err := os.MkdirAll(path, os.ModePerm)
//	if err != nil {
//		fmt.Println("文件夹创建失败：", err)
//		return false
//	}
//	return true
//}
//
////下载图片
//func saveImg(images []string, title string, sort string) {
//	for image_key, image_url := range images {
//		reg, _ := regexp.Compile(`\/([\!\w-]+\.(gif|jpg|png|jpeg|svg))`)
//		image_name := ""
//		if image_reg := reg.FindStringSubmatch(image_url); cap(image_reg) < 2 {
//			image_name = string(time.Now().UnixNano())
//		} else {
//			image_name = image_reg[1]
//		}
//
//		//通过http请求获取图片的流文件
//		resp, err := http.Get(image_url)
//		if err != nil {
//			fmt.Println("出错：", err)
//		}
//		defer resp.Body.Close()
//		dir := ""
//		//是否同一个目录
//		if one_dir {
//			dir = "./allbiaoqing/"
//		} else {
//			dir = "./biaoqing/" + sort + "." + title + "/"
//		}
//		if !createDir(dir) {
//			continue
//		}
//		out, err := os.Create(dir + image_name)
//		if err != nil {
//			fmt.Println("新建目录错误", err)
//			continue
//		}
//		wt := bufio.NewWriter(out)
//		defer out.Close()
//		n, err := io.Copy(wt, resp.Body)
//
//		if err != nil {
//			//panic(err)
//			fmt.Printf("%d.下载失败：%d %s\r\n", image_key+1, n, err)
//		} else {
//			fmt.Printf("%d.下载成功：%s %d %s\r\n", image_key+1, title, n, image_url)
//		}
//
//		wt.Flush()
//	}
//}
//
////字符串 正则查询
//func myReg(pattern string, data string) [][]string {
//	//pattern := `<p.*?><img.*?src=["|'](.*?)["|'].*?\/?><\/p>`
//	preg := regexp.MustCompile(pattern)
//	if preg == nil {
//		fmt.Println("regexp err:", preg)
//		return nil
//	}
//	preg_res := preg.FindAllStringSubmatch(data, -1)
//	return preg_res
//}
//
////<p.*?><img.*?src=["|'](.*?)["|'].*?\/?><\/p>
//func httpRequest(url string) (*http.Response, error) {
//	request, err := http.NewRequest("GET", url, nil)
//	if err != nil {
//		return nil, err
//	}
//	request.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
//	request.Header.Add("Accept-Language", "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
//	request.Header.Add("Connection", "keep-alive")
//	request.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36")
//
//	client := http.Client{}
//	return client.Do(request)
//}
//
//// 根据指定的URL进行数据抓取
//func fetch(url string) ([]byte, error) {
//	resp, err := httpRequest(url)
//	if err != nil {
//		return nil, err
//	}
//	defer resp.Body.Close()
//	if resp.StatusCode != http.StatusOK {
//		return nil, fmt.Errorf("wrong status code: %d of %s", resp.StatusCode, url)
//	}
//	return ioutil.ReadAll(resp.Body)
//}
//
//func getInput() string {
//	//使用os.Stdin开启输入流
//	//函数原型 func NewReader(rd io.Reader) *Reader
//	//NewReader创建一个具有默认大小缓冲、从r读取的*Reader 结构见官方文档
//	in := bufio.NewReader(os.Stdin)
//	//in.ReadLine函数具有三个返回值 []byte bool error
//	//分别为读取到的信息 是否数据太长导致缓冲区溢出 是否读取失败
//	str, _, err := in.ReadLine()
//	if err != nil {
//		return err.Error()
//	}
//	str = []byte(strRemoveSpace(string(str)))
//	if string(str) == "" {
//		fmt.Println("输入无效请再次输入：\r\n")
//		return getInput()
//	}
//	return string(str)
//}
